﻿#pragma once
#include "Common.h"

class GCamera
{
public:
	GCamera(Eigen::Vector3f vec3EyePos);
	GCamera();

	void Move(float fDisLookAt, float fDisX);
	void Rotate(Eigen::Vector3f vec3Axis, float fAngle);

	Eigen::Matrix4f GetMVPMatrix();
	Eigen::Matrix4f GetViewMatrix();
	Eigen::Matrix4f GetModelMatrix(float rotation_angle);
	Eigen::Matrix4f GetProjectionMatrix(float eye_fov, float aspect_ratio, float zNear, float zFar);

private:
	float m_fFov = 45.0f;
	float m_fAspec = 1.0f;
	float m_fZNear = -0.1f;
	float m_fZFar = -50.0f;

	Eigen::Vector3f m_vec3Pos;
	Eigen::Vector3f m_vec3LookAt;
	Eigen::Vector3f m_vec3Up;
};